<!DOCTYPE HTML>
<html lang="zh">
<head>
<title>HasMethod - 语法 &amp; 使用 | AutoHotkey v2</title>
<meta name="description" content="The HasMethod function returns a non-zero number if the specified value has a method by the specified name." />
<meta name="ahk:equiv-v1" content="index.htm" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<link href="../static/theme.css" rel="stylesheet" type="text/css" />
<script src="../static/content.js" type="text/javascript"></script>
</head>
<body>

<h1>HasMethod</h1>

<p>如果指定的值具有指定名称的方法, 则返回非零数字.</p>

<pre class="Syntax">HasMethod := <span class="func">HasMethod</span>(Value <span class="optional">, Name, ParamCount</span>)</pre>
<h2 id="Parameters">参数</h2>
<dl>
  <dt>Value</dt>
  <dd>
    <p>类型: <a href="../Concepts.htm#values">Any</a></p>
    <p>除了 ComObject 之外的任何类型的任何值.</p>
  </dd>
  <dt>Name</dt>
  <dd>
    <p>类型: <a href="../Concepts.htm#strings">字符串</a></p>
    <p>如果省略, 检查 <em>Value</em> 本身是否可调用. 否则, 请指定, 要检查的方法名.</p>
  </dd>
  <dt>ParamCount</dt>
  <dd>
    <tp>类型: <a href="../Concepts.htm#numbers">整数</a></tp>
    <p>如果省略(或者参数数没有被验证), 则会对 Call 方法进行基本检查, 以验证该对象是可调用的.</p>
    <p>否则, 请指定将被传递给方法或函数的参数数量.  如果指定, 可以查询该方法的 MinParams, MaxParams 和 IsVariadic 属性, 以验证它是否可以接受这个参数指定的数量. 如果这些属性不存在, 参数计数就不会被验证.</p>
    <p>这个计数不应该包括隐含的 <code>this</code> 参数.</p>
  </dd>
</dl>

<h2 id="Return_Value">返回值</h2>
<p>类型: <a href="../Concepts.htm#boolean">整数(布尔值)</a></p>
<p>如果找到方法并通过验证(如果执行), 则返回 1(true), 否则返回 0(false).</p>

<h2 id="Remarks">备注</h2>
<p>HasMethod 与 <a href="GetMethod.htm">GetMethod</a> 具有同样的<a href="GetMethod.htm#Remarks">限制</a>.</p>
<p>此函数可用于评估某个值是否支持特定操作. 例如, 没有调用方法的值不能被调用或传递给 <a href="SetTimer.htm">SetTimer</a>, 而没有 __Enum 方法或 Call 方法的值不能传递给 <a href="For.htm">For</a>. 但是, 方法的存在并不保证可以调用它, 因为必须满足一些要求, 比如参数计数.</p>
<p>当指定 <em>ParamCount</em> 时, 该函数执行的验证等同于 <a href="SetTimer.htm">SetTimer</a> 等内置函数所执行的验证.</p>
<p>返回 0(false) 并不一定表示不能调用该方法, 因为该值可能具有一个 __Call <a href="../Objects.htm#Meta_Functions">元-函数</a>. 但是, __Call 在特定的上下文中, 如 <a href="For.htm">For</a> 调用  __Enum 时, 不会触发调用. 如果 __Call 存在, 则无法检测它可能支持的方法.</p>
<p>函数支持<a href="../Objects.htm#primitive">原始值</a>.</p>

<h2 id="Related">相关</h2>
<p><a href="../Objects.htm">Objects</a>, <a href="HasBase.htm">HasBase</a>, <a href="HasProp.htm">HasProp</a>, <a href="GetMethod.htm">GetMethod</a></p>

<h2 id="Examples">示例</h2>
<div class="ex" id="ExBasic">
<p><a class="ex_number" href="#ExBasic"></a> 说明该函数的使用.</p>
<pre>
MsgBox HasMethod(0, "HasMethod") <em>; 1</em>
MsgBox HasMethod(0, "Call") <em>; 0</em>
</pre>
</div>

</body>
</html>